# -*- coding: utf-8 -*-
"""
@Time    : 2024/6/28 19:27 
@Author  : ZhangShenao 
@File    : property_dynamic_binding.py 
@Desc    : 类/对象属性动态绑定
可以在运行时动态地为类和对象添加属性
只要向一个不存在的属性赋值,便会创建出这个属性
"""


# 定义一个空类
class A:
    pass


# 为A类动态设置属性
A.apple = 'apple'
print(f'A.apple = {A.apple}')

# 创建A类的对象
a = A()
# 为a对象动态设置属性
a.banana = 'banana'
print(f'a.banana = {a.banana}')
# banana属性仅绑定在了对象a上,因此对象a1并没有这个属性
a1 = A()
# print(f'a1.banana = {a1.banana}')   # AttributeError: 'A' object has no attribute 'banana'
# 因为apple属性绑定在了A类上,因此实例a1也可以访问
print(f'a1.apple = {a1.apple}')
